package com.senlingspace.system.domain.dto;

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 退款订单
 *
 * @author lebronjames
 * @date 2024/08/06
 */
@Data
public class RefundOrderDto implements Serializable {

    /**
     * 主键
     */
    private Long orderId;

    /**
     * 订单编号
     */
    private String orderNumber;

    /**
     * 门店ID
     */
    private Long shopId;

    /**
     * 门店名称;冗余字段
     */
    private String shopName;

    /**
     * 订单来源（10=门店，20=抖音，30=美团，40=小程序）
     */
    private Integer source;

    /**
     * 订单类型：101=门票、102=商品、103=门票+商品
     */
    private Integer orderType;

    /**
     * 项目ID
     */
    private Long projectId;

    /**
     * 项目名称;冗余字段
     */
    private String projectName;

    /**
     * 核销码
     */
    private String verifyCode;

    /**
     * 订单金额，包含优惠+包含税（分）
     */
    private Integer totalAmount;

    /**
     * 优惠金额（分）
     */
    private Integer discountAmount;

    /**
     * 实际支付金额（分）
     */
    private Integer actualAmount;

    /**
     * 税额（分）
     */
    private Integer taxAmount;

    /**
     * 税率
     */
    private BigDecimal taxRate;

    /**
     * 税前金额（分）
     */
    private Integer preTaxAmount;

    /**
     * 税后金额（分）
     */
    private Integer afterTaxAmount;

    /**
     * 业务状态：
     * 待核销（UNREDEEMED）、
     * 已核销（REDEEMED）、
     * 待支付（PENDING_PAYMENT）、
     * 订单取消（ORDER_CANCELLED）、
     * 已退款（REFUNDED）、
     * 已领手环（WRISTBAND_RECEIVED）、
     * 已领设备（DEVICE_RECEIVED）、
     * 已完成（COMPLETED）
     */
    private String businessStatus;

    /**
     * 支付状态：INIT-初始化 CREATE-下单成功 SUCCESS-交易成功 FAIL-交易失败 DEAL-交易处理中 UNKNOWN-未知状态 CLOSE-订单关闭 PART_REFUND-部分退款 REFUND-全部退款(或订单被撤销）
     */
    private String paymentStatus;

    /**
     * 支付方式；WECHAT（微信），ALIPAY（支付宝），UQRCODEPAY（银联支付），BESTPAY（翼支付），DCPAY（数字货币支付），INCASH（现金支付）,SUNING(苏宁易付宝)
     */
    private String paymentType;

    /**
     * 第三方单号;比如：美团、抖音
     */
    private String thirdOrderNumber;

    /**
     * 支付时间
     */
    private Date paymentTime;

    /**
     * 创建者
     */
    private String createBy;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新者
     */
    private String updateBy;

    /**
     * 更新时间
     */
    private Date updateTime;

}
